#!/bin/bash
baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)
################## 请仔细检查以下步骤,注释不需要的步骤 ##################
# 工作目录,根据实际情况设置
## 此目录编译Hi3516DV300平台后大小20G左右
## 用户家目录需要占用1G左右
work_dir=''
### 代理账号,根据实际情况填写,HW内网请填写china域账号
proxy_user=""
### 代理账号对应的密码,请输入原密码,不需要替换特殊字符,脚本自动URL转义
proxy_passwd=""
#### HW内网建议使用 proxycn2.huawei.com  或者 proxyhk.huawei.com
proxy_domain=""
#### 代理服务器端口,按照实际填写,不填写默认使用80,HW内网端口为8080
proxy_port=""
URL_proxy_passwd=`echo ${proxy_passwd}|tr -d '\n' |od -An -tx1|tr ' ' %|tr -d '\n'`

#↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑以上信息需要关注+修改↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑#
# 未配置工作目录,默认使用脚本当前目录
if [ "X${work_dir}" == "X" ];then
    work_dir=${baseDirForScriptSelf}/
fi
#sudo chmod -R 777 ${work_dir}
# 判断工作目录字符串长度,如果超过100,需要提醒用户可能编译会遇到Argument list too long错误
# 至于为什么是100,完全拍脑袋定的,这里只是告警提示,不做强制判据
ignore_too_long_path=NO
if [ -f ${baseDirForScriptSelf}/dir_too_long.warn.`date '+%Y-%m-%d'` ];then
    ignore_too_long_path=YES
fi
if [ "${#work_dir}" -gt 100  -a "${ignore_too_long_path}" == "NO" ];then
    echo  -e "${failed_color},源码所在目录长度超长,请关注!!!"
    echo  -e "${failed_color},源码所在目录长度超长,请关注!!!"
    echo  -e "${failed_color},源码所在目录长度超长,请关注!!!"
    echo """源码所在目录长度为:${#work_dir} ,建议<100,如果源码路径超长,可能会引起编译失败
失败示例如下:
ninja: fatal: posix_spawn: Argument list too long
-------------------------------------------------
如果需要重新设置源码目录,请Ctrl+C取消后编辑init.sh重新设置work_dir,重新执行脚本"""
    for ((i=10;i>0;i--));
    do
        echo -n "$i"
        sleep 1
    done
    echo '''确认以上信息后,请按回车(Enter)后继续...
    After confirming the above information, press Enter to continue...'''
    read
    touch ${baseDirForScriptSelf}/dir_too_long.warn.`date '+%Y-%m-%d'`
fi
if [ ! -d ${work_dir} ];then
    sudo mkdir -p ${work_dir}
fi
# 工作目录,我本地比较大的磁盘挂载点是/data01,根据实际情况设置
## 此目录编译Hi3516DV300平台后大小为23G
## 用户家目录需要占用1G左右
# 用到的一些变量,提前声明
unix_time=`date '+%s'`
success_color='\033[1;42mSuccess\033[0m'
failed_color='\033[1;41mFailed\033[0m'

# 获取当前执行账号 name 与 group
os_user_name=`whoami`
os_user_group_id=`cat /etc/passwd|grep "${os_user_name}:"|awk -F ':' '{print $3}'`
os_user_group_name=`cat /etc/group|grep ":${os_user_group_id}:"|awk -F ':' '{print $1}'`

# git忽略ssl
git config --global http.sslVerify false >>${baseDirForScriptSelf}/init_run.log 2>&1
sudo git config --system http.sslverify false >>${baseDirForScriptSelf}/init_run.log 2>&1
# 记住密码
git config --global credential.helper store >>${baseDirForScriptSelf}/init_run.log 2>&1
function push_error(){
    error_line=$1 # 报错行
    error_msg=$2 # 报错消息
    error_level=$3 # 报错是否需要退出:0不退出,1退出
    echo "${failed_color},lines:${error_line},msg:${error_msg}"
    if [ "X${error_level}" != "X0" ];then
        exit 1
    fi
}
function check_sha256(){
    check_url=$1 #来源URL
    local_file=$2  #本地文件绝对路径
    check_sha256=`curl -s -k ${check_url}.sha256`  # 当前使用华为云,URL固定,所以写死了,后续如果有变动,此处需要修改
    local_sha256=`sha256sum ${local_file} |awk '{print $1}'`
    if [ "X${check_sha256}" == "X${local_sha256}" ];then
        echo -e "${success_color},Sha256 check OK."
    else
        echo -e "${failed_color},Sha256 check Failed."
        exit 1  # 默认退出,必须保证sha256一致,如有特殊需要,请自行注释
    fi
}
